﻿/*******************************************************************************************************************************************
Modification History:
********************************************************************************************************************************************
Date		Author		    Description
********************************************************************************************************************************************
05/08/2011	Brian Kuhn	    Created ISpecification interface
*******************************************************************************************************************************************/

namespace Concise
{
    /// <summary>
    /// Describes a specification that defines a set of criteria.
    /// </summary>
    public interface ISpecification
    {
        //=======================================================================================================
        //  Methods
        //=======================================================================================================
        #region IsSatisfiedBy(object entity)
        /// <summary>
        /// Evaluates the specification against the specified entity.
        /// </summary>
        /// <param name="entity">The instance to evaluate the specificaton against.</param>
        /// <returns>
        /// <see langword="true" /> if the specification was satisfied by the <paramref name="entity"/>; otherwise, <see langword="false" />.
        /// </returns>
        bool IsSatisfiedBy(object entity);
        #endregion
    }
}
